<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>递归</title>
    <script>
      /* 
        递归
        它是一种算法,算法用来解决运算问题的一种方法(思想)
        递归用来解决大量重复并且有规律的运算

        特点: 函数内部自己调用自己
        优点: 可以使用极少的代码实现非常复杂重复有规律的运算
        缺点: 费时费力,性能不高
      
        注意: 递归算法必须指定递归出口,让递归可以退出
       */
      //计算阶乘
      function getFac(num) {
        return num == 1 ? 1 : num * getFac(num - 1)
      }
      console.log(getFac(10))

      //斐波那契数列
      function feibo(pos) {
        return pos == 1 || pos == 2 ? 1 : feibo(pos - 1) + feibo(pos - 2)
      }
      console.log(feibo(10))
    </script>
  </head>
  <body></body>
</html>
